define(function (require, exports) {
	var $ = require('jquery');
	var pubjs = require('pubjs');
	var util = require('util');
	var view = require('@base/view');
	// var dspUtil = require('dspUtil');
	var campaign_util = require('campaign/modules/util');
	var PROCESS_DATA = campaign_util.PROCESS_DATA;

	var Base = view.container.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				'class': 'P-campaignBasic',
				'tplFile': '/tpl/campaign/editStep/basic.tpl',
				'vModel': {

					'Name': LANG('新建推广组_') + util.date('YmdHis'),
					// 权限控制
					'right': {
						'plan': pubjs.checkRight(''),
						'name': pubjs.checkRight(''),
						'totalLimit': pubjs.checkRight(''),
						'dailyLimit': pubjs.checkRight(''),
						'tag': pubjs.checkRight('')
					}

				},
				'url': {

				},
				// tips配置
				'tipOpts': {
					// 总预算
					totalLimitTip: {
						width: 300,
						data: LANG('推广组的总消费上限。')
					},
					// 每日预算
					dailyLimitTip: {
						width: 300,
						data: LANG('推广组推广期间每天的广告预算。')
					},
				}
			});

			this.Super('init', arguments);
		},
		afterBuild: function() {
			var self = this;
			var c = self.getConfig();
			var vm = self.vm.$;
			self.getDOM().addClass(c.class);


			var opts = {
				'plan': {
					'type': 'button',
					'url': 'plan/list',
					'name': 'Name',
					'key': '_id',
					'reqType': 'websocket',
					'all': true,
					'width': 300,
					// 'def': '',
					'param': {
						'noAmount': true,
						'mongoField': ['Name'],
						'no_limit': true,
						'no_default_plan': true
					},
					'def': LANG('请选择计划'),
					'placeholder': LANG('选择一个计划'),
					'panel_config': {
						'hasSearch': true,
						'height': 200
					}
				},
				'tag': {
					'database': 'campaign/labels',
					'async': true,
					'tips': LANG('给推广组 贴上标签，方便管理。多个标签用“,”分开。')
				},
				// 投放日期开始
				startTime: {
					value: util.date('Y-m-d'),
					buttons: null
				},
				// 投放结束日期
				endTime: {
					min: util.date('Y-m-d')
				}
			};

			self.buildFromTemplate(util.extend(opts, c.tipOpts));
		},
		beforeBuildTemplate: function(){

		},
		afterBuildTemplate: function(){
			this.updatePlan();
		},
		// 投放日期
		onDateChange: function(ev){
			var cs = this.$;
			switch (ev.from){
				case cs.startTime:
					cs.endTime.setup({min: ev.param});
					break;
				case cs.endTime:
					cs.startTime.setup({max: ev.param});
					break;
			}
			return false;
		},
		// 更新计划字段
		updatePlan: function(){
			var planId = util.getQueryString('planId');
			var plan = this.get('plan');
			if(planId && plan){
				plan.setValue(planId);
			}
			return this;
		},
		validate: function(data){
			var self = this;
			data = data || self.getData();
			if (data) {
				if(!data.PlanId){
					pubjs.alert(LANG('请选择计划'));
					return false;
				}
				if(!data.Name){
					pubjs.alert(LANG('请填写推广组名称'));
					return false;
				}
				if(data.Name.length > 50){
					pubjs.alert(LANG('推广组名称不得超过 50 个字符'));
					return false;
				}
			}

			return true;
		},
		setData: function(data){
			var self = this;
			var cs = self.$;
			if(data){
				this.vm.$.Name = data.Name;
				if(cs.plan){
					cs.plan.setValue(data.PlanId);
				}
				if(cs.totalLimit){
					cs.totalLimit.setData(data.MainStrategy.TotalLimit);
				}
				if(cs.dailyLimit){
					cs.dailyLimit.setData(data.MainStrategy.DailyLimit);
				}
				if(cs.tag){
					cs.tag.setData(data.Label);
				}
				
				// 投放日期
				var startTime = data.StartTime || util.date('Y-m-d');
				var endTime = data.EndTime;
				if (startTime) {
					cs.startTime.setData(startTime);
				}
				if (endTime) {
					cs.endTime.setData(endTime);
				}
			}
			return this;
		},
		getData: function(){
			var self = this;
			var vm = self.vm.$;
			var data = {};

			data.PlanId = +self.$.plan.getValue(true).id || 0;

			data.Name = util.trim(vm.Name);

			data.MainStrategy = {};

			if(vm.right.totalLimit){
				var TotalLimit = self.$.totalLimit.getData(true);
				TotalLimit = PROCESS_DATA.budget({totalLimit: TotalLimit});
				data.MainStrategy.TotalLimit = TotalLimit.totalLimit;
			}

			if(vm.right.dailyLimit){
				var DailyLimit = self.$.dailyLimit.getData(true);
				DailyLimit = PROCESS_DATA.budget({dailyLimit: DailyLimit});
				data.MainStrategy.DailyLimit = DailyLimit.dailyLimit;
			}


			if(vm.right.tag){
				// 活动标签
				data.Label = self.$.tag.getData();
			}
			
			// 投放日期
			data.StartTime = this.$.startTime.getData();
			data.EndTime = this.$.endTime.getData() || 0;

			return data;
		},

		reset: function(){
			var self = this;
			self.vm.reset();

			self.vm.set('Name', LANG('新建推广组_') + util.date('YmdHis'));

			var mods = ['plan', 'tag', 'totalLimit', 'dailyLimit', 'startTime', 'endTime'];
			util.each(mods, function(item){
				if(self.get(item)){
					self.get(item).reset();
				}
			});
			self.$.plan.load();
			self.updatePlan();
			return self;
		}

	});

	exports.base = Base;

})